﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;

namespace Engine.NetClasses
{
    [StructLayout(LayoutKind.Sequential,
    Pack = 1, CharSet = CharSet.Auto)]
    public struct NullPacket : Engine.NetClasses.IPacket
    {
        /// <summary>
        /// Этот пакет может быть от клиента
        /// </summary>
        bool _clientPack;
        /// <summary>
        /// Этот пакет может быть от сервера
        /// </summary>
        bool _serverPack;
        /// <summary>
        /// Тип пакета
        /// </summary>
        byte _packetType;
        #region Constructor
        
        /// <summary>
        /// Новый пакет
        /// </summary>
        /// <param name="Client"> может быть от клиента</param>
        /// <param name="Server"> может быть от сервера</param>
        /// <param name="typePack"> тип пакета</param>
        public NullPacket(bool Client, bool Server, byte typePack)
        {
            _clientPack = Client;
            _serverPack = Server;
            _packetType = typePack;
            
        }
        #endregion
        
        public bool ClientPacket
        {
            get { return _clientPack; }
        }
        public string Name
        {
            get { return this.GetType().Name; }
        }
        public byte PacketType
        {
            get { return _packetType; }
        }
        public  void Convert(byte[] data)
        {

        }
        public  bool isNull()
        {
            return false;
        }
        public bool ServerPacket
        {
            get { return _serverPack; }
        }
        public short Size
        {
            get { return 1; }
        }


        public byte[] GetByte()
        {
            byte[] tmp = new byte[3];
            byte[] s = BitConverter.GetBytes(1);
            tmp[0] = s[0]; //размер 1 байт
            tmp[1] = s[1]; // размер 2 байт
            tmp[2] = _packetType; //тип пакета
            return tmp;
        }

        public bool DoubleCrypt { get { return false; } }
        public bool NeedCrypt
        {
            get { return false; }
        }
    }

}
